"use strict";
/*
 * @Author: quit
 * @Date: 2023-03-10 15:06:44
 * @LastEditTime: 2023-03-10 16:05:16
 * @Descripttion: 类创建对象实例
 * 1. 传统的构造函数和原型对象的方法来创建对象实例
 * 2. class 是ES6新增的语法糖
 * 3. ES6中实例属性都定义在constructor 中,在ES7里可以直接将这个属性定义在类的最顶层,且可去掉this
 * 4. class的类型本质上是一个函数;类本身就是指向自己的构造函数
 * 5. 在类的实例上面调用方法,其实就是调用原型上的方法
 * @notice:
 */
Object.defineProperty(exports, "__esModule", { value: true });
// function Greeter(message) {
//     this.msg = message;
// }
// Greeter.prototype.sayHi = function () {
//     console.log(`---${this.msg}---`);
// };
// let v1 = new Greeter('传统的方式创建对象');
// console.log(v1.msg);
// console.log(v1.sayHi);
class Greeter {
    constructor(message) {
        this.msg = message;
    }
    sayHi() {
        console.log(`--- ${this.msg} ---`);
    }
}
// let v1: Greeter = new Greeter('class 的方式创建对象实例');
let v1 = new Greeter('class 的方式创建对象实例');
console.log(v1);
console.log(v1.msg);
console.log(v1.sayHi);
console.log(typeof Greeter);
console.log(Greeter === Greeter.prototype.constructor);
console.log(v1.sayHi === Greeter.prototype.sayHi);
